[TcaplusDB]tcapsvrmgr工具
进入工具所在目录,输入 ./tcapsvrmgr help 即可获得该工具所支持的命令列表,如下所示:
- restore
- getcount
- compare
- listmeta
- filterrecord
- listrecord
- listrecordsize
- printenginestat
- printindexstat
- changeid
- deletebykey
- import
- getrecord
- partkeyrestore
- changelocalsequence
- changesuccsyncsequence
- overwritesuccsyncseqwithlocalseq
- checklistindexelement
- listindexusage
注意:
- 在使用工具时,工具的版本必须和svr的版本一致
- 在复制或备份引擎文件时,必须先正确停止对应的svr进程
- 在使用工具对引擎文件或ulog文件进行操作前,请注意备份
- 建议将命令需要的文件与工具置于同一目录下,或使用绝对路径的方式指定文件
执行 ./tcapsvrmgr help
1. restore
该命令用于对引擎文件进行整理或者恢复,命令格式为 ./tcapsvrmgr restore engfile [--quick --no-backup --no-report --output= --dest-eng-file-args= --compress= --last-access-time= ],其中,engfile为必填参数,表示要进行整理或者恢复的引擎文件,其余可选参数的含义如下:
- --quick 指定该参数表示采用快速模式
- --no-backup 指定该参数表示不对源引擎文件进行备份
- --no-report 指定该参数表示不生成统计报告
- --output 该参数指定目标引擎文件的目录,若不指定该参数,则与源引擎文件目录相同
- --dest-eng-file-args 该参数用于设置目标引擎文件的参数,如--dest-eng-file-args=#bnum=750000#xmsiz=10000000,若不指定该参数,则保持与源引擎文件相同
- --compress 指定在生成目标引擎文件时使用的压缩算法,no表示不进行压缩,snappy表示使用snappy压缩算法
- --last-access-time 指定该参数表示将目标引擎文件中数据的最近访问时间设为指定值,该参数的取值范围为[0, 1893427200]
当引擎文件的参数配置不合理时,可以通过restore命令进行重新配置;当引擎文件损坏(如tcapsvr进程被kill掉)时,可以使用restore命令进行修复。
示例:当要对AppID=2,ZoneID=3,Table_Name=test_table,ShardID=1的的引擎文件进行修复时,可以执行 ./tcapsvrmgr restore /data1/1.2.2.2/AppID_2_ZoneID_3/test_table_1.txh --output=./ --quick --compress=snappy --log-level=debug
2. getcount
该命令用于获取指定引擎文件中的记录数目,命令格式为 ./tcapsvrmgr getcount engfile,engfile表示引擎文件。
示例:./tcapsvrmgr getcount /data1/1.2.2.2/AppID_2_ZoneID_3/test_table_1.txh
3. compare
该命令用于判断两个引擎文件的中的数据是否一致,命令格式为 ./tcapsvrmgr compare --eng-file=1.txh --dest-eng-file=2.txh [--check-data-version --check-access-time --print-miss-value],其中,前两个必填参数为要比较的两个引擎文件,后面三个可选参数的含义如下:
- --check-data-version 指定该参数表示检查数据版本是否一致
- --check-access-time 指定该参数表示检查数据的最后访问时间是否一致
- --print-miss-value 指定该参数表示将记录数目较少的引擎文件中所缺少的记录打印到文件
示例:对主备节点上AppID=2,ZoneID=3,Table_Name=test_table,ShardID=1的引擎文件进行对比,可以执行 ./tcapsvrmgr compare --eng-file=/data1/1.2.2.1/AppID_2_ZoneID_3/test_table_1.txh --dest-eng-file=/data1/1.2.2.2/AppID_2_ZoneID_3/test_table_1.txh
4. listmeta
该命令用于获取指定引擎文件的AppID、ZoneID、Table_Name、ShardID、CheckPoint、SuccSyncSequence以及表结构等信息,命令格式为 ./tcapsvrmgr listmeta engfile,engfile表示引擎文件。
示例:./tcapsvrmgr listmeta test_table_1.txh
5. filterrecord
该命令用于将指定引擎文件中的记录按照某一规则进行过滤,并将过滤出来的记录保存至新的引擎文件中,且生成的引擎文件与源引擎文件参数相同。
命令格式为 ./tcapsvrmgr filterrecord filter.so test_table_1.txh,其中filter.so为用户生成的动态库文件,test_table_1.txh为引擎文件。
假如用于过滤记录的代码文件为filter.cpp,可以使用 g++ -fPIC -shared -g -lstdc++ filter.cpp -o filter.so 生成对应的动态链接库文件。在filter.cpp文件中,需要根据具体需求实现FilterRecord函数。
FilterRecord函数示例 展开源码
按照上述函数示例生成so文件并执行filterrecord命令后,将会得到两个新的引擎文件:one_test_table_1.txh 和 two_test_table_1.txh,分别用于保存 TimeKey=1 的记录和 TimeKey=2 的记录,可以使用listrecord或getrecord命令对新生成的引擎文件进行查看。
6. listrecord
该命令用于将引擎文件中的数据以文本方式输出,对于复杂字段(如struct、union、数组)以16进制输出,命令格式为 ./tcapsvrmgr listrecord engfile [keyonly],engfile表示引擎文件,keyonly为可选参数,表示只输出key字段。
示例:./tcapsvrmgr listrecord /data1/1.2.2.2/AppID_2_ZoneID_3/test_table_1.txh
7. listrecordsize
该命令用于统计引擎文件中记录的大小,会列出位于各个大小区间内的记录数目,命令格式为 ./tcapsvrmgr listrecordsize engfile,engfile表示引擎文件。
示例:./tcapsvrmgr listrecordsize /data1/1.2.2.2/AppID_2_ZoneID_3/test_table_1.txh
8. printenginestat
该命令用于查看引擎文件的各项统计信息和状态信息,命令格式为 ./tcapsvrmgr printenginestat engfile,engfile表示引擎文件。
示例:./tcapsvrmgr printenginestat /data1/1.2.2.2/AppID_2_ZoneID_3/test_table_1.txh
9. printindexstat
该命令用于查看本地索引对应的引擎文件的各项统计信息和状态信息,命令格式为 ./tcapsvrmgr printenginestat engfile,engfile表示本地索引对应的引擎文件。
示例:./tcapsvrmgr printindexstat /data1/1.2.2.1/AppID_2_ZoneID_3/test_table_1_TimeKey_index.txh
10. changeid
该命令用于修改指定引擎文件中的AppID、ZoneID、Table_Name、ShardID,命令格式为 ./tcapsvrmgr changeid -f engfile -A app_id -Z zone_id -T table_name -S shard_id,engfile表示引擎文件。
示例:./tcapsvrmgr changeid -f test_table_1.txh -A 1 -Z 1 -T test -S 2,可以使用listmeta命令查看修改是否生效。
11. deletebykey
该命令用于从运行中的TcaplusDB中删除指定记录,命令格式为 ./tcapsvrmgr deletebykey configfile,configfile为deletebykey命令的配置文件。
示例:./tcapsvrmgr deletebykey tcapsvrmgr_deletebykey_cfg.xml
在tcapsvrmgr_deletebykey_cfg.xml中,指定了DirServerAddr、PassWord、AppID、ZoneID、Table_Name以及要删除的key所在的文件路径名等信息。
用于记录要删除的记录的key文件需要遵循固定格式:(1)文件的第一行为各个key字段的名称,从第二行开始为每条要删除的记录的key字段的值;(2)各个字段之间以空格分隔。
如某张数据表有两个key字段key1、key2,分别为整型和浮点型。如果要删除key1=10 key2=6.8这条记录,则key文件的第一行应为“key1 key2”,第二行应为“10 6.8”
deletebykey命令的配置文件模板与说明 展开源码
12. import
该命令用于将引擎文件中的部分或全部记录导入到运行中的TcaplusDB中,命令格式为 ./tcapsvrmgr import configfile,configfile为import命令的配置文件。
示例:./tcapsvrmgr import tcapsvrmgr_import_cfg.xml
在tcapsvrmgr_import_cfg.xml中,指定了DirServerAddr、PassWord以及要导入的引擎文件的AppID、ZoneID、Table_Name、ShardID等信息;若只导入引擎文件中的部分记录,则还要指定要导入的记录的key文件路径名,key文件的格式要求与deletebykey命令相同。
import命令的配置文件模板与说明(导入全部记录) 展开源码
import命令的配置文件模板与说明(导入部分记录) 展开源码
13. getrecord
该命令用于从指定引擎文件中获取指定记录,命令格式为 ./tcapsvrmgr getrecord configfile,configfile为getrecord命令的配置文件。
示例:./tcapsvrmgr getrecord tcapsvrmgr_getrecord_cfg.xml
在tcapsvrmgr_getrecord_cfg.xml中,指定了用于获取记录的引擎文件的AppID、ZoneID、Table_Name、ShardID以及需要获取的记录数目、对应的key字段等信息。
getrecord命令的配置文件模板与说明 展开源码
14. partkeyrestore
该命令用于部分key回档,即将指定引擎文件中的部分key记录导入到运行中的TcaplusDB中,命令格式为 ./tcapsvrmgr partkeyrestore configfile,configfile为partkeyrestore命令的配置文件。
示例:./tcapsvrmgr partkeyrestore tcapsvrmgr_partkeyrestore_cfg.xml
在tcapsvrmgr_partkeyrestore_cfg.xml中,指定了DirServerAddr、PassWord、要导入的引擎文件的AppID、ZoneID、Table_Name、ShardID以及要回档的部分key等信息。注意:这里使用的partkey必须在数据库中建立了索引。
partkeyrestore命令的配置文件模板与说明 展开源码
15. changelocalsequence
该命令用于修改指定引擎文件中的CheckPoint信息,命令格式为 ./tcapsvrmgr changelocalsequence -f engfile -p x,其中,engfile为引擎文件,x为要设置的CheckPoint的值。
示例:./tcapsvrmgr changelocalsequence -f test_table_1.txh -p 12,可以使用listmeta命令查看修改是否生效。
16. changesuccsyncsequence
该命令用于修改指定引擎文件中的SuccSyncSequence信息,命令格式为 ./tcapsvrmgr changesuccsyncsequence -f engfile -s x,其中,engfile为引擎文件,x为要设置的SuccSyncSequence的值。
示例:./tcapsvrmgr changesuccsyncsequence -f test_table_1.txh -s 91,可以使用listmeta命令查看修改是否生效。
17. overwritesuccsyncseqwithlocalseq
该命令使用指定引擎文件中CheckPoint字段的值覆盖SuccSyncSequence字段的值,命令格式为 ./tcapsvrmgr overwritesuccsyncseqwithlocalseq -f engfile,其中,engfile为引擎文件。
示例:./tcapsvrmgr overwritesuccsyncseqwithlocalseq -f test_table_1.txh,可以使用listmeta命令查看修改是否生效。
18. checklistindexelement
该命令用于找出指定引擎文件中index crash的key和element crash的key,所谓index crash,是指list表中index指向的element找不到;所谓element crash,是指某些element找不到与之对应的index。
命令格式为 ./tcapsvrmgr checklistindexelement engfile index_crash_key_file element_crash_key_file,三个参数的具体含义如下:
- engfile 表示要检查的list表的引擎文件
- index_crash_key_file 用于保存index crash的key的文件,文本形式
- element_crash_key_file 用于保存element crash的key的文件,文本形式
示例:./tcapsvrmgr checklistindexelement /txh/AppID_2_ZoneID_3/table_traverser_list_2.txh index_crash.txt element_crash.txt
19. listindexusage
该命令用于查询list表的索引使用情况,命令格式为 ./tcapsvrmgr listindexusage engfile,其中,engfile为list表的引擎文件。
示例:./tcapsvrmgr listindexusage table_list_2.txh